from PIL import Image
import tabula
import pandas as pd

def image_to_pdf(image_path, pdf_path):
    """
    将图片转换为 PDF 文件
    :param image_path: 图片文件路径
    :param pdf_path: 生成的 PDF 文件路径
    """
    try:
        image = Image.open(image_path)
        if image.mode == 'RGBA':
            image = image.convert('RGB')
        image.save(pdf_path, 'PDF')
        print(f"图片已成功转换为 {pdf_path}")
    except Exception as e:
        print(f"图片转换为 PDF 时出错: {e}")


def pdf_table_to_xlsx(pdf_path, output_path):
    """
    从 PDF 文件中提取表格数据并保存为 Excel 文件
    :param pdf_path: PDF 文件路径
    :param output_path: 输出的 Excel 文件路径
    """
    try:
        # 使用 tabula 读取 PDF 中的表格数据
        dfs = tabula.read_pdf(pdf_path, pages='all')
        if dfs:
            # 将所有表格数据合并到一个 DataFrame 中
            combined_df = pd.concat(dfs, ignore_index=True)
            # 保存为 Excel 文件
            combined_df.to_excel(output_path, index=False)
            print(f"成功将 PDF 中的表格保存为 {output_path}")
        else:
            print("未从 PDF 中提取到表格数据")
    except Exception as e:
        print(f"处理 PDF 表格时出错: {e}")


# 示例调用
image_path = 'D:\\codeProject\\form_recognition\\images\\table_results\\0_1桃源大桥施工图4_281_page0.png'
pdf_path = 'temp_table.pdf'
output_path = 'output_from_image.xlsx'

# 先将图片转换为 PDF
image_to_pdf(image_path, pdf_path)
# 再从 PDF 中提取表格并保存为 Excel
pdf_table_to_xlsx(pdf_path, output_path)